<?php
namespace Exam\Object;

use Tsy\Library\Object;
/**
 * 试卷
 * 
 * @package Exam\Object
 */
class ExampaperObject extends Object
{
    
    /**

     * 试卷ID SID int(11) 自增 主键 必填  
     * 科目ID KID int(11)   必填  
     * 创建人ID UID int(11)   必填  
     * 创建时间 CTime datetime     
     * 考试时长 TTime int(11)   必填  
     * 试卷名称 SJName char(50)     
     * 备注 Note varchar(2000)     
     * 方案ID FID int(11)   必填  
     * 考试批次 TBatch int(11)   必填
     * 试卷难度ID ELID int(11) 不填时默认为0  0-知识点均衡，1-低难度，2-中难度，3-高难度
     * 考试开始时间 TSTime datetime   根据考试的时间段决定试卷是否开放考试
     * 考试结束时间 TETime datetime
     * 练习开始时间 PSTime datetime   根据练习的时间段决定试卷是否开放练习
     * 练习结束时间 PETime datetime
     */
    /**
     * @var string
     */
    protected $main='Exampaper';
    protected $pk='SID';
    public $addFields=['KID','UID','CTime','TTime','SJName','Note','FID','TBatch','TSTime','TETime','PSTime','PETime'];//允许添加的字段，如果数组最后一个元素值为true则表示排除
    public $saveFields=['KID','UID','CTime','TTime','SJName','Note','FID','TBatch','TSTime','TETime','PSTime','PETime'];//允许修改的字段，如果数组最后一个元素值为true则表示排除
    public $addFieldsConfig=[
    
//      'KID'=>[//字段名称:科目ID,数据类型:int(11),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 科目ID(KID) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 科目ID(KID) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 科目ID(KID) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 科目ID(KID) 的值是否存在，取该值或该函数的值
//      ],

//      'UID'=>[//字段名称:创建人ID,数据类型:int(11),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 创建人ID(UID) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 创建人ID(UID) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 创建人ID(UID) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 创建人ID(UID) 的值是否存在，取该值或该函数的值
//      ],

        'CTime'=>[//字段名称:创建时间,数据类型:datetime,注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 创建时间(CTime) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 创建时间(CTime) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 创建时间(CTime) 的值是否存在，取该值或该函数的值,
              self::FIELD_CONFIG_VALUE_FUNCTION=>'date("Y-m-d H:i:s")',//不管 创建时间(CTime) 的值是否存在，取该值或该函数的值
        ],

//      'TTime'=>[//字段名称:考试时长,数据类型:int(11),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 考试时长(TTime) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 考试时长(TTime) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 考试时长(TTime) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 考试时长(TTime) 的值是否存在，取该值或该函数的值
//      ],

//      'SJName'=>[//字段名称:试卷名称,数据类型:char(50),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 试卷名称(SJName) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 试卷名称(SJName) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 试卷名称(SJName) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 试卷名称(SJName) 的值是否存在，取该值或该函数的值
//      ],

//      'Note'=>[//字段名称:备注,数据类型:varchar(2000),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 备注(Note) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 备注(Note) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 备注(Note) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 备注(Note) 的值是否存在，取该值或该函数的值
//      ],

//      'FID'=>[//字段名称:方案ID,数据类型:int(11),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 方案ID(FID) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 方案ID(FID) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 方案ID(FID) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 方案ID(FID) 的值是否存在，取该值或该函数的值
//      ],

//      'TBatch'=>[//字段名称:考试批次,数据类型:int(11),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 考试批次(TBatch) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 考试批次(TBatch) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 考试批次(TBatch) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 考试批次(TBatch) 的值是否存在，取该值或该函数的值
//      ]
    ];
    public $saveFieldsConfig=[
    
//      'KID'=>[//字段名称:科目ID,数据类型:int(11),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 科目ID(KID) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 科目ID(KID) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 科目ID(KID) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 科目ID(KID) 的值是否存在，取该值或该函数的值
//      ],

//      'UID'=>[//字段名称:创建人ID,数据类型:int(11),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 创建人ID(UID) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 创建人ID(UID) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 创建人ID(UID) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 创建人ID(UID) 的值是否存在，取该值或该函数的值
//      ],

        'CTime'=>[//字段名称:创建时间,数据类型:datetime,注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 创建时间(CTime) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 创建时间(CTime) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 创建时间(CTime) 的值是否存在，取该值或该函数的值,
              self::FIELD_CONFIG_VALUE_FUNCTION=>'time',//不管 创建时间(CTime) 的值是否存在，取该值或该函数的值
        ],

//      'TTime'=>[//字段名称:考试时长,数据类型:int(11),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 考试时长(TTime) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 考试时长(TTime) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 考试时长(TTime) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 考试时长(TTime) 的值是否存在，取该值或该函数的值
//      ],

//      'SJName'=>[//字段名称:试卷名称,数据类型:char(50),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 试卷名称(SJName) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 试卷名称(SJName) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 试卷名称(SJName) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 试卷名称(SJName) 的值是否存在，取该值或该函数的值
//      ],

//      'Note'=>[//字段名称:备注,数据类型:varchar(2000),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 备注(Note) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 备注(Note) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 备注(Note) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 备注(Note) 的值是否存在，取该值或该函数的值
//      ],

      'FID'=>[//字段名称:方案ID,数据类型:int(11),注释:
            self::FIELD_CONFIG_DEFAULT=>1,//当 方案ID(FID) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 方案ID(FID) 的值不存在时，取该值或该函数的值,
            self::FIELD_CONFIG_VALUE=>1,//不管 方案ID(FID) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 方案ID(FID) 的值是否存在，取该值或该函数的值
      ],

//      'TBatch'=>[//字段名称:考试批次,数据类型:int(11),注释:
//            self::FIELD_CONFIG_DEFAULT=>'null',//当 考试批次(TBatch) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_DEFAULT_FUNCTION=>'null',//当 考试批次(TBatch) 的值不存在时，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE=>'null',//不管 考试批次(TBatch) 的值是否存在，取该值或该函数的值,
//            self::FIELD_CONFIG_VALUE_FUNCTION=>'null',//不管 考试批次(TBatch) 的值是否存在，取该值或该函数的值
//      ]

    ];
    protected $property=[
        'Plan'=>[//方案ID  方案  属性
            self::RELATION_TABLE_NAME=>'Plan',//属性关联表
            self::RELATION_TABLE_COLUMN=>'FID',//关联表中的关联字段
            self::RELATION_MAIN_COLUMN=>'FID',//主笔中的关联字段
            self::RELATION_TABLE_PROPERTY=>self::PROPERTY_ONE_OBJECT,
        ],
        'User'=>[//创建人ID  用户  属性
            self::RELATION_TABLE_NAME=>'User',//属性关联表
            self::RELATION_TABLE_COLUMN=>'UID',//关联表中的关联字段
            self::RELATION_MAIN_COLUMN=>'UID',//主笔中的关联字段
            self::RELATION_TABLE_PROPERTY=>self::PROPERTY_ONE,            
        ],
        'Discipline'=>[//科目ID  科目  属性
            self::RELATION_TABLE_NAME=>'Discipline',//属性关联表
            self::RELATION_TABLE_COLUMN=>'KID',//关联表中的关联字段
            self::RELATION_MAIN_COLUMN=>'KID',//主笔中的关联字段
            self::RELATION_TABLE_PROPERTY=>self::PROPERTY_ONE,            
        ],
    ];
    protected $link=[
       
    ];
    protected $searchFields=['KID','UID','CTime','TTime','SJName','Note','FID','TBatch'];
    protected $searchTable='Exampaper';
    protected $searchWFieldsConf=[
        'Exampaper'=>'Exampaper',        
    ];
    protected $searchWFieldsGroup=[
        'Exampaper'=>['KID','UID','CTime','TTime','SJName','Note','FID','TBatch','SID'],
    ];

    function add($data = [], $Properties = false, $OnlyPK = false)
    {
        $data = array_merge($data,$_POST);
        $name = $data['SJName'];
        $result = M('Exampaper')->where("SJName='$name'")->find();
        if (is_array($result)){
            return "添加失败，该名称的试卷已经存在,试卷ID为：".$result['SID'];
        }
        $data['CTime'] = date("Y-m-d H:i:s");
        return parent::add($data, $Properties, $OnlyPK); // TODO: Change the autogenerated stub
    }

    function epManage($Keyword = '', $W = []){
        
//        $result = (new ExampaperObject())->
        $result = $this->search($Keyword,$W);
        $result = $result['L'];
        for($i=0; $i<count($result); $i++){
            $SID = $result[$i]['SID'];
            $temp = M('Exampaper')->where("SID='$SID'")->field('count(SID) AS times')->select();
            $result[$i]['times']  =  $temp[0]['times'];
        }
        return $result;
    }
}